package cn.fay.chapter04;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class Test6 {
	/*
	 * 得到所有的四位吸血鬼数字.
	 * 吸血鬼数字是指位数为偶数的数字，
	 * 可以由一对数字相乘而得到，
	 * 而这对数字各包含乘积的一半位数的数字，
	 * 其中从最初的数字中选取的数字可以任意排序。
	 * 以两个0结尾的数字是不允许的，
	 * 例如，下列数字都是“吸血鬼”数字：
	 * 1260 = 21 * 60
	 * 1827 = 21 * 87
	 * 2187 = 27 * 81
	*/
	public static void main(String[] args) {
		
		Map<Integer, String> vampire = vampire();
		Set<Entry<Integer, String>> entrySet = vampire.entrySet();
		for (Entry<Integer, String> entry : entrySet) {
			System.out.println(entry.getKey()+"="+entry.getValue());
			
		}
		
	}

	public static Map<Integer, String> vampire()
	{
		Map<Integer, String> vamMap=new HashMap<Integer, String>();
		int num1,num2,product; 
		int[] startDigit=new int[4];
		int[] productDigit=new int[4];
		for (num1=10; num1<=99; num1++) {
			for(num2=10;num2<=99;num2++)
			{
				product=num1*num2;
				startDigit[0]=num1/10;
				startDigit[1]=num1%10;
				startDigit[2]=num2/10;
				startDigit[3]=num2%10;
				productDigit[0]=product/1000;
				productDigit[1]=product%1000/100;
				productDigit[2]=product%1000%100/10;
				productDigit[3]=product%1000%100%10;
				int count=0;
				for(int x=0;x<4;x++)
				{
					for(int y=0;y<4;y++)
					{
						if (productDigit[x]==startDigit[y]) {
							productDigit[x]=-1;
							startDigit[y]=-2;
							count++;
							if(count==4)
							{
								vamMap.put(product, num1+"*"+num2);
							}	
							
						}
					}
				}
			}
		}
		return vamMap;
	}
}
